#ifndef AUTH_H

#define AUTH_H 1

#include "include/const.h"
#include "core.h"
#include <stdbool.h>

//经过认证的用户的链表
typedef struct AuthInfo {
	int auth;//是否已经认证
	int sock;//套接字
	char ipv4[IPV4_LEN];//IPv4地址
	int port;//端口
	char uname[UNAME_LEN];//用户名
	char priv[PRIV_CMD_LEN];//用户权限
	char curpath[PATH_LEN];
	struct AuthInfo *next;
} auth,*auth_ptr;

//初始化链表
bool auth_init(auth_ptr *l);
//销毁链表
void auth_destroy(auth_ptr *l);
//链表头结点后增加节点
void auth_push(auth_ptr l, auth_ptr node);
//链表判空
bool auth_empty(auth_ptr l);
//链表去第一个节点
auth auth_pop(auth_ptr l);
//删除某一节点
bool auth_remove(auth_ptr l, int clnt_sock);
//求链表长度
int auth_size(auth_ptr l);
//遍历链表，传遍历函数指针
void auth_traverse(auth_ptr l, void (*funcp)(auth_ptr));
//根据套接字号查找节点
auth_ptr auth_find(auth_ptr l, int clnt_sock);
//链表节点顺序反转
void auth_reverse(auth_ptr l);
//查看某一套接字是否在链表中
bool auth_contains(auth_ptr l, int clnt_sock);
//遍历链表的全局函数
void print_l(auth_ptr p);

#endif
